#include "Containers/NamedObject.h"
using namespace std;

NamedObject::NamedObject(const TString& name, const TString& title) : fName{name}, fTitle{title}
{}

void NamedObject::SetNameAndTitle(const TString& name, const TString& title)
{
  SetName(name);
  SetTitle(title);
}

void NamedObject::SetName(const YAML::Node& input)
{
  const auto& name = input["name"];
  if(!name) return;
  SetName(name.as<std::string>().c_str());
}

void NamedObject::SetTitle(const YAML::Node& input)
{
  const auto& title = input["title"];
  if(!title) return;
  SetTitle(title.as<std::string>().c_str());
}

const TString NamedObject::BuildString_Named() const
{
  if(!HasNameOrTitle()) return "";
  if(HasNameAndTitle()) return Form("%s (%s)", GetName(), GetTitle());
  if(HasName()) return GetName();
  return GetTitle();
}